\subsection{Gestor de jugador.}

La gestión del jugador se lleva a cabo en la clase HumanManager. Esta clase 
se encarga de la creación, actualización, eliminación e interacción con el 
personaje jugador.

También cuenta con la responsabilidad de la creación y eliminación de la 
forma de colisión asociada al personaje jugador.

Para la creación del personaje tan solo es necesario llamar a la función 
correspondiente indicando la posición inicial de este.

En la actualización del personaje se  anima el personaje y se orienta respecto 
de su sistema ortonormal (de LocalSpaceMixin).

El resto de funciones tienen que ver con la interacción entre el personaje y el 
jugador.

El método translate permite aplicar una translación directamente sobre el 
cuerpo rígido del personaje. Esta translación viene dada por un vector que se 
construye en función de las teclas pulsadas por el jugador.

El método lookAt orienta el sistema de coordenadas ortonormal del personaje con 
respecto de la posición del cursor. Dependiendo de la posición del ratón en la 
pantalla, se calcula su intersección con el plano formado por los ejes X y Z y 
se orienta el sistema ortonormal para que el vector delante apunte hacia el 
punto de intersección.

Gracias a dicha orientación, en el siguiente método, shoot, podemos emitir un 
rayo desde la posición del personaje y con la dirección dada por su vector 
delante el cual representa un disparo. Este método es llamado cada vez que el 
jugador presiona alguno de los botones del ratón.

El rayo con el origen en el personaje y la dirección de su vector delante se 
utiliza para realizar una consulta de colisión sobre las entidades de la 
escena. Para que tan solo tenga en cuenta los enemigos, se aplica una mascara 
de selección a las entidades de los zombis.

Un detalle interesante es como asociar las entidades de Ogre con las clases 
propias del juego. Esto se logra gracias a la clase Any proporcionada por Ogre. 
Gracias a esta clase, se puede asociar cualquier clase propia con una entidad.

Gracias a la clase Any y al mecanismo de casting que proporciona, se puede 
saber a que enemigo se ha impactado y actuar en consecuencia.

El diagrama de clases de HumanManager puede consultarse en la figura 
\ref{HumanManager}.

\begin{figure}[h]
\centering
\includegraphics[width = 12 cm]{HumanManager.eps}
\caption{Diagrama de clases de HumanManager y Character.}
\label{HumanManager}
\end{figure}
